.. :validated: 3.2.0

Мандатное управление доступом (МРД)
---------------------------------------------------------------------

Мандатное управление доступом представляет собой подход к управлению безопасностью в информационных системах, при котором система сама определяет и принимает решения о предоставлении или ограничении доступа к ресурсам в зависимости от заданных правил безопасности.

В подразделе выполняется поддержка МРД, настройка классификаторов уровней и категорий конфиденциальности и настройка их для пользователя.

Поддержка МРД включает в себя применение политик безопасности, ведение журналов аудита и контроль за перемещением информации между уровнями доступа. Настройка уровней и категорий для пользователя дает возможность точно определить, к каким ресурсам системы пользователь имеет право получить доступ, что минимизирует риски несанкционированного доступа к защищаемой информации.

.. attention::

   Параметры пользователей групповых политик **ALD Pro** применимы только при авторизации под нулевым уровнем конфиденциальности без выбора категорий конфиденциальности, так как при включенном МРД происходит смена алгоритма определения домашней директории пользователя.

Модель мандатного управления доступом
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Модель МРД основана на правилах WURD (write up, read down) — субъекты могут записывать только в объекты с уровнем конфиденциальности равным или выше своего, а читать только из объектов с уровнем равным или ниже своего. В Astra Linux используется МРОСЛ ДП-модель, которая объединяет мандатное управление доступом (МРД), мандатный контроль целостности (МКЦ) и дискреционное управление доступом.

Уровни конфиденциальности
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Классификаторы уровней определяют иерархическую структуру допуска к информации по степени секретности. Уровни конфиденциальности представляют целые числа от 0 до 255 с текстовыми наименованиями. По умолчанию создается четыре уровня (0-3), где 0 означает отсутствие конфиденциальности. Администратор может добавлять новые уровни, при этом рекомендуется использовать значения 10, 20, 30 вместо 1, 2, 3 для возможности вставки промежуточных уровней. Для работы с уровнями выше 3 необходимо изменить параметр sysmaclev в /usr/sbin/pdp-init-fs и перезагрузить систему.

Категории конфиденциальности
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Категории конфиденциальности — неиерархические метки от 0 до 63 с текстовыми наименованиями, позволяющие разделять доступ к информации по функциональным областям и рабочим группам. В метках безопасности набор категорий задается 64-битным числом в шестнадцатеричном формате, где каждый бит соответствует отдельной категории. Пользователь с несколькими категориями может читать файлы с любой из них, но записывать только в файлы со всеми своими категориями одновременно.

Делегирование прав обычному пользователю
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Чтобы назначить пользователя администратором мандатного разграничения доступа (МРД), необходимо назначить ему следующие привилегии:

- ``PARSEC_CAP_CHMAC`` — дает право изменять метки безопасности;

- ``PARSEC_CAP_IGNMACLVL`` — для обхода контроля уровней конфиденциальности (рекомендуется);

- ``PARSEC_CAP_IGNMACCAT`` — для обхода контроля категорий конфиденциальности (рекомендуется).

Ограничения делегированных прав
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Пользователь может потерять доступ к объекту, если назначит ему метку безопасности выше своей. Утилиты администрирования доступны по абсолютному пути ``/sbin/pdpl-file``. Полное администрирование мандатного контроля целостности (МКЦ) доступно только пользователю root с максимальным уровнем целостности ``max_ilev`` (63).

Управление метками безопасности
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для назначения меток используется утилита pdpl-file с синтаксисом:

.. code-block:: bash

    pdpl-file [Уровень_МРД]:[Уровень_МКЦ:[Категории_МРД:[Флаги]]] Имя_объекта

где:

- Уровень **МРД** — уровень конфиденциальности, который задается как именем (например, «Совершенно_секретно»), так и числом в обычной десятичной системе счисления (например, «2»). Если значение будет не задано, то по умолчанию назначается нулевой уровень МРД.

- Уровень **МКЦ** — уровень целостности, который задается как именем (например, «Высокий»), так и числом в обычной десятичной системе счисления (например, «63»). Если значение будет не задано, то по умолчанию назначается нулевой уровень МКЦ.

- Категории **МРД** — список категорий конфиденциальности, которые можно перечислить как по именам через запятую (например, «Мотострелковые_войска,Танковые_войска»), так и задать одним числом в шестнадцатеричной системе счисления (например, 0x3).

Если значение не задано, то по умолчанию метка безопасности будет без категорий конфиденциальности. Если нужно задать сразу все доступные категории (значение ``sysmaxcat``), то можно использовать специальное значение «-1».
Процессы наследуют метки от родительских процессов, изменить метку может только администратор через утилиту ``pdp-exec``.

Контейнеры объектов
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

По умолчанию действует политика **CCR** — в каталоге могут находиться только объекты с меткой, полностью совпадающей с меткой каталога. Новые объекты наследуют метку родительского каталога. Политику можно инвертировать атрибутом ``CCNR``.

Мандатные атрибуты
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Основные атрибуты для изменения политики **МРД**:

- ``CCNR`` — позволяет хранить в каталогах объекты с различными метками конфиденциальности не выше метки каталога. Новые объекты получают нулевую метку. Каталоги с ``CCNR`` недоступны на запись обычным пользователям во избежание скрытых каналов связи.

- ``EHOLE`` — делает низкоцелостные файлы с нулевой меткой доступными на запись для процессов с любой меткой. Технически применим к любым файлам, но административно разрешен только для устройств и сокетов (например, ``/dev/null``) во избежание рассекречивания информации.

``WHOLE`` — делает файлы с максимальной меткой доступными на запись для процессов с любой меткой. Используется для файлов журналов, в которые пишут приложения разных уровней конфиденциальности.

Чтобы получить полный список файлов, на которые установлен атрибут ``ehole`` или ``whole``, необходимо воспользоваться следующей командой:

.. code-block:: bash

    find / -exec pdp-ls -MXda {} \; 2> /dev/null | grep ':ehole'

.. toctree::
   :maxdepth: 4

   Уровни конфиденциальности/index.rst
   Категории конфиденциальности/index.rst
   Аудит Parsec/index.rst
   Привилегии Parsec/index.rst
   Учтенные устройства/index.rst
   Правила для устройств/index.rst
   